<?php

use Illuminate\Support\Facades\Storage;

/**
 * 通用公共函数
 */

if (!function_exists('okBack')) {
    /**
     * @param int $error_code 状态码
     * @param array $data 数据
     * @param array $addition 额外参数
     * @return \Illuminate\Http\JsonResponse
     */
    function okBack($msg = 'success', $data = [], $addition = [])
    {
        if (is_array($msg) || is_object($msg) || is_bool($msg)) {
            $addition = $data;
            $data = $msg;
            $msg = 'success';
        }
        //null值兼容处理
        if (is_null($msg)) {
            $msg = 'success';
            $addition = $data;
            $data = [];
        }
        return response()->json(array_merge([
            'error_code' => 0,
            'msg' => $msg,
            'data' => $data,
        ], $addition));
    }
}

if (!function_exists('errBack')) {
    /**
     * @param string $msg
     * @param int $error_code
     * @param int $code
     * @param array $headers
     * @return \Illuminate\Http\JsonResponse
     */
    function errBack($msg = '参数错误', $error_code = 400, $code = 200, $headers = [])
    {
        return response()->json([
            'error_code' => $error_code,
            'msg' => $msg
        ], $code, $headers);
    }
}

if (!function_exists('getCode')) {
    /**
     * @param string $prefix
     * @return string 前缀+年月日时+三位随机数
     */
    function getCode($prefix = 'R')
    {
        $time = date('YmdH');
        return $prefix . $time . mt_rand(100, 999);
    }
}

if (!function_exists('im_rand_str')) {
    function my_rand_str($len = 7)
    {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $randomString = '';
        for ($i = 0; $i < $len; $i++) {
            $index = rand(0, strlen($characters) - 1);
            $randomString .= $characters[$index];
        }
        return $randomString;
    }
}


//post请求
function postCurl($url, $body, $header, $type = "POST")
{
    //1.创建一个curl资源
    $ch = curl_init();
    //2.设置URL和相应的选项
    curl_setopt($ch, CURLOPT_URL, $url);//设置url
    //设置为false,只会获得响应的正文(true的话会连响应头一并获取到)
    curl_setopt($ch, CURLOPT_HEADER, 0);
    //设置发起连接前的等待时间，如果设置为0，则无限等待。
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    //将curl_exec()获取的信息以文件流的形式返回，而不是直接输出。
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $body);//全部数据使用HTTP协议中的"POST"操作来发送。
    //设置请求头
    if (count($header) > 0) {
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    }
    //上传文件相关设置
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 3);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);// 对认证证书来源的检查
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);// 从证书中检查SSL加密算
    //3)设置提交方式
    switch ($type) {
        case "GET":
            curl_setopt($ch, CURLOPT_HTTPGET, true);
            break;
        case "POST":
            curl_setopt($ch, CURLOPT_POST, true);
            break;
        case "PUT"://使用一个自定义的请求信息来代替"GET"或"HEAD"作为HTTP请求。这对于执行"DELETE" 或者其他更隐蔽的HTT
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
            break;
        case "DELETE":
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
            break;
    }
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)'); // 模拟用户使用的浏览器
    //5)
    //3.抓取URL并把它传递给浏览器
    $res = curl_exec($ch);
    $result = json_decode($res, true);
    //4.关闭curl资源，并且释放系统资源
    curl_close($ch);
    if (empty($result))
        return $res;
    else
        return $result;
}


//上传文件
function saveFile($file)
{
    if ($file->isValid()) {
        $ext = $file->getClientOriginalExtension(); //文件拓展名
        $tempPath = $file->getRealPath(); //临时文件的绝对路径
        $fileName = date('Ymd') . '/' . date('YmdHis') . uniqid() . '.' . $ext; //新文件名
        $bool = Storage::disk('admin')->put($fileName, file_get_contents($tempPath)); //传成功返回bool值
        if (!$bool) {
            return false;
        }
        $data = [
            'fileName' => $fileName,
            'tempPath' => $tempPath

        ];
        return $data;
    } else {
        return false;
    }
}

/**
 * @param $data
 * @param string $type
 * @return bool环信返回结果处理
 */
function resultHuanxinInfo($data)
{
    if (isset($data['error']) && !empty($data['error'])) {
        return ['code' => 400, 'message' => '操作失败！','data'=>$data];
    } else {
        return ['code' => 200, 'message' => '操作成功！','data'=>$data];
    }
}

/**
 *网易云信返回的结果处理
 * @param $result
 * @param string $type
 *author:tangfen
 *date:$ct
 */
function resultNeteaseInfo($data)
{
    if ($data['code'] == 200) {//成功
        return ['code' => 200, 'message' => '操作成功！','data'=>$data];
    } else { //失败
        return ['code' => 400, 'message' => '操作失败！','data'=>$data];
    }
}

/**
 *融云返回的结果处理
 * @param $result
 * @param string $type
 *author:tangfen
 *date:$ct
 */
function resultRongCloudInfo($data)
{
    $data = json_decode($data, true);
    if ($data['code'] == 200) {//成功
        return ['code' => 200, 'message' => '操作成功！','data'=>$data];
    } else { //失败
        return ['code' => 400, 'message' => '操作失败！','data'=>$data];
    }
}

//生成6位随机数字验证码
function randomnumber()
{
    $key = '';
    $pattern = '1234567890';
    for ($i = 0; $i < 6; $i++) {
        $key .= $pattern[mt_rand(0, 9)];
    }
    return $key;
}

/**
 * JSONArray对应的accid串
 * @param $var
 * @return false|string
 */
function toJson($var)
{
    $arr = [];
    if (is_array($var) && count($var) > 0) {
        $arr = $var;
    } else if (is_string($var) && strpos($var, ",")) {
        $arr = explode(",", trim($var, ","));
    } else {
        $arr[] = $var;
    }
    $json = json_encode($arr);
    return $json;

}

/**
 * 随机生成12位
 * @param $var
 * @return false|string
 */
function makeImCode($length = 12)
{
    // 密码字符集，可任意添加你需要的字符
    $chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
        'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
        't', 'u', 'v', 'w', 'x', 'y', 'z',
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
    // 在 $chars 中随机取 $length 个数组元素键名
    $keys = array_rand($chars, $length);
    $password = '';
    for ($i = 0; $i < $length; $i++) {
        // 将 $length 个数组元素连接成字符串
        $password .= $chars[$keys[$i]];
    }
    return $password;
}


/**
 * 生成唯一标志 UUID
 * @return string
 * @author an
 * @time 2021-12-07 14:27
 */
function get_uuid()
{
    $chars = md5(uniqid(mt_rand(), true));
    $uuid = substr($chars, 0, 8) . '-'
        . substr($chars, 8, 4) . '-'
        . substr($chars, 12, 4) . '-'
        . substr($chars, 16, 4) . '-'
        . substr($chars, 20, 12);
    return $uuid;
}

/**
 * 拼接请求字符
 * @param $key 要拼接的键, 如userId
 * @param $arr [1, 2, 3]
 * @return string userId=1&userId=2&userId=3
 * @author an
 * @time 2021-12-10 18:51
 */
function my_build_query($key, $arr)
{
    if (!is_array($arr)) {
        return '';
    }
    $res = '';
    foreach ($arr as $val) {
        $res .= $key . '=' . $val . '&';
    }
    return rtrim($res, '&');
}

/**
 * 获取UTC格式的时间
 * @return string
 * @throws Exception
 * @author an
 * @date 2021-12-12 14:00
 */
function utc_time($time = null)
{
    $timestamp = new \DateTime('now', new \DateTimeZone('UTC'));
    if ($time) {
        $timestamp->setTimestamp(strtotime($time));
    }
    $timeStr = $timestamp->format("Y-m-d\TH:i:s\Z");
    return $timeStr;
}

 function read_gz($gz_file){
    $buffer_size = 4096; // read 4kb at a time
    $file = gzopen($gz_file, 'rb');
    $str='';
    while(!gzeof($file)) {
        $str.=gzread($file, $buffer_size);
    }
    gzclose($file);
    return $str;
}



function auto_read($str, $charset='UTF-8') {
    $item = mb_detect_encoding($str,'auto');
    return mb_convert_encoding($str,$charset,$item);
}

function Sec2Time($time){
    if(is_numeric($time)){
        $value = array(
            "years" => 0, "days" => 0, "hours" => 0,
            "minutes" => 0, "seconds" => 0,
        );
        if($time >= 31556926){
            $value["years"] = floor($time/31556926);
            $time = ($time%31556926);
            $t=$value["years"] ."年";
            Return $t;
        }
        if($time >= 86400){
            $value["days"] = floor($time/86400);
            $time = ($time%86400);
            $t=$value["days"] ."天";
            Return $t;
        }
        if($time >= 3600){
            $value["hours"] = floor($time/3600);
            $time = ($time%3600);
            $t=$value["hours"] ."小时";
            Return $t;
        }
        if($time >= 60){
            $value["minutes"] = floor($time/60);
            $time = ($time%60);
            $t=$value["minutes"] ."分";
            Return $t;
        }
        if($time < 60){
            $t=$value["seconds"] ."秒";
            Return $t;
        }
    }else{
        return (bool) FALSE;
    }
}

function url_type($url)
{
    $preg = "/http[s]?:\/\/[\w.]+[\w\/]*[\w.]*\??[\w=&\+\%]*/is";

    if (preg_match($preg, $url))
    {
            // 匹配是否是图片还是视频
        $flag = @getImageSize($url);
        return !empty($flag) ? 2 : 3; // 2图片3视频
    }
    else
    {
        return 1; // 文字
    }
}

/**
 * 合成图片
 * @param array  $pic_list [图片列表数组]
 * @param boolean $is_save  [是否保存，true保存，false输出到浏览器]
 * @param string $save_path [保存路径]
 * @return boolean|string
 */
function getGroupAvatar($pic_list=array(),$is_save=false,$save_path=''){
    //验证参数
    if(empty($pic_list) || empty($save_path)){
        return false;
    }
    if($is_save){
        //如果需要保存，需要传保存地址
        if(empty($save_path)){
            return false;
        }
    }
    // 只操作前9个图片
    $pic_list = array_slice($pic_list, 0, 9);
    //设置背景图片宽高
    $bg_w = 350; // 背景图片宽度
    $bg_h = 350; // 背景图片高度
    //新建一个真彩色图像作为背景
    $background = imagecreatetruecolor($bg_w,$bg_h);
    //为真彩色画布创建白灰色背景，再设置为透明
    $color = imagecolorallocate($background, 244, 244, 244);
    imagefill($background, 0, 0, $color);
    imageColorTransparent($background, $color);


    //根据图片个数设置图片位置
    $pic_count = count($pic_list);
    $lineArr = array();//需要换行的位置
    $space_x = 3;
    $space_y = 3;
    $line_x = 0;
    switch($pic_count) {
        case 1: // 正中间
            $start_x = intval($bg_w/4); // 开始位置X
            $start_y = intval($bg_h/4); // 开始位置Y
            $pic_w = intval($bg_w/2); // 宽度
            $pic_h = intval($bg_h/2); // 高度
            break;
        case 2: // 中间位置并排
            $start_x = 4;
            $start_y = 100;
            $pic_w = intval($bg_w/2) - 5 ;
            $pic_h = intval($bg_h/2) - 5 ;
            $space_x = 4;
            break;
        case 3:
            $start_x = 100; // 开始位置X
            $start_y = 20; // 开始位置Y
            $pic_w = intval($bg_w/2) - 33 ; // 宽度
            $pic_h = intval($bg_h/2) - 33 ; // 高度
            $lineArr = array(2);
            $line_x = 33;
            break;
        case 4:
            $start_x = 30; // 开始位置X
            $start_y = 30; // 开始位置Y
            $pic_w = intval($bg_w/2) - 33; // 宽度
            $pic_h = intval($bg_h/2) - 33; // 高度
            $lineArr = array(3);
            $line_x = 30;

            break;
        case 5:
            $start_x = 30; // 开始位置X
            $start_y = 30; // 开始位置Y
            $pic_w = intval($bg_w/3) - 5; // 宽度
            $pic_h = intval($bg_h/3) - 5; // 高度
            $lineArr = array(3);
            $line_x = 5;
            break;
        case 6:
            $start_x = 5; // 开始位置X
            $start_y = 30; // 开始位置Y
            $pic_w = intval($bg_w/3) - 5; // 宽度
            $pic_h = intval($bg_h/3) - 5; // 高度
            $lineArr = array(4);
            $line_x = 5;
            break;
        case 7:
            $start_x = 53; // 开始位置X
            $start_y = 5; // 开始位置Y
            $pic_w = intval($bg_w/3) - 5; // 宽度
            $pic_h = intval($bg_h/3) - 5; // 高度
            $lineArr = array(2,5);
            $line_x = 5;
            break;
        case 8:
            $start_x = 30; // 开始位置X
            $start_y = 5; // 开始位置Y
            $pic_w = intval($bg_w/3) - 5; // 宽度
            $pic_h = intval($bg_h/3) - 5; // 高度
            $lineArr = array(3,6);
            $line_x = 5;
            break;
        case 9:
            $start_x = 5; // 开始位置X
            $start_y = 5; // 开始位置Y
            $pic_w = intval($bg_w/3) - 5; // 宽度
            $pic_h = intval($bg_h/3) - 5; // 高度
            $lineArr = array(4,7);
            $line_x = 5;
            break;
    }
    foreach( $pic_list as $k=>$pic_path ) {
        $kk = $k + 1;
        if ( in_array($kk, $lineArr) ) {
            $start_x = $line_x;
            $start_y = $start_y + $pic_h + $space_y;
        }
        //获取图片文件扩展类型和mime类型，判断是否是正常图片文件
        //非正常图片文件，相应位置空着，跳过处理
        $image_mime_info = @getimagesize($pic_path);
        if($image_mime_info && !empty($image_mime_info['mime'])){
            $mime_arr = explode('/',$image_mime_info['mime']);
            if(is_array($mime_arr) && $mime_arr[0] == 'image' && !empty($mime_arr[1])){
                switch($mime_arr[1]) {
                    case 'jpg':
                    case 'jpeg':
                        $imagecreatefromjpeg = 'imagecreatefromjpeg';
                        break;
                    case 'png':
                        $imagecreatefromjpeg = 'imagecreatefrompng';
                        break;
                    case 'gif':
                    default:
                        $imagecreatefromjpeg = 'imagecreatefromstring';
                        $pic_path = file_get_contents($pic_path);
                        break;
                }
                //创建一个新图像
                $resource = $imagecreatefromjpeg($pic_path);
                //将图像中的一块矩形区域拷贝到另一个背景图像中
                // $start_x,$start_y 放置在背景中的起始位置
                // 0,0 裁剪的源头像的起点位置
                // $pic_w,$pic_h copy后的高度和宽度
                imagecopyresized($background,$resource,$start_x,$start_y,0,0,$pic_w,$pic_h,imagesx($resource),imagesy($resource));
            }
        }
        // 最后两个参数为原始图片宽度和高度，倒数两个参数为copy时的图片宽度和高度
        $start_x = $start_x + $pic_w + $space_x;
    }
    if($is_save){
        $dir = pathinfo($save_path,PATHINFO_DIRNAME);
        if(!is_dir($dir)){
            $file_create_res = mkdir($dir,0777,true);
            if(!$file_create_res){
                return false;//没有创建成功
            }
        }
        $res = imagejpeg($background,$save_path);
        imagedestroy($background);
        if($res){
            return true;
        }else{
            return false;
        }
    }else{
        //直接输出
        header("Content-type: image/jpg");
        imagejpeg($background);
        imagedestroy($background);
    }
}

/**
 * @desc 图片变圆角
 * @param string $imgpath
 * @param int $radius
 * @return false|resource
 * @author zhouzhou
 * @time 2022/1/4 11:36
 */
function radius_img($imgpath = './public/qrcode/qrcode.jpg', $radius = 0){
    $ext = pathinfo($imgpath);
    $src_img = null;
    switch ($ext['extension']){
        case in_array($ext['extension'], ['jpg','jpeg']):
            $src_img = imagecreatefromjpeg($imgpath);
            break;
        case 'png':
            $src_img = imagecreatefrompng($imgpath);
            break;
        case 'gif':
            $src_img = imagecreatefromgif($imgpath);
            break;
    }
    $wh = getimagesize($imgpath);
    $w = $wh[0];
    $h = $wh[1];
    $radius = $radius == 0 ? (min($w, $h) / 2) : $radius;
    $img = imagecreatetruecolor($w + 90, $h + 90);
    //这一句一定要有
    imagesavealpha($img, true);
    //拾取一个完全透明的颜色,最后一个参数127为全透明
    $bg = imagecolorallocatealpha($img, 255, 255, 255, 1);
    imagefill($img, 0, 0, $bg);
    $r = $radius; //圆 角半径
    for ($x = 0; $x < $w; $x++){
        for ($y = 0; $y < $h; $y++){
            $rgbColor = imagecolorat($src_img, $x, $y);
            if (($x >= $radius && $x <= ($w - $radius)) || ($y >= $radius && $y <= ($h - $radius))){
                //不在四角的范围内,直接画
                imagesetpixel($img, $x + 45, $y+ 45, $rgbColor);
            }else{
                //在四角的范围内选择画
                //上左
                $y_x = $r; //圆心X坐标
                $y_y = $r; //圆心Y坐标
                if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))){
                    imagesetpixel($img, $x+ 45, $y+ 45, $rgbColor);
                }
                //上右
                $y_x = $w - $r; //圆心X坐标
                $y_y = $r; //圆心Y坐标
                if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))){
                    imagesetpixel($img, $x+ 45, $y+ 45, $rgbColor);
                }
                //下左
                $y_x = $r; //圆心X坐标
                $y_y = $h - $r; //圆心Y坐标
                if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))){
                    imagesetpixel($img, $x+ 45, $y+ 45, $rgbColor);
                }
                //下右
                $y_x = $w - $r; //圆心X坐标
                $y_y = $h - $r; //圆心Y坐标
                if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))){
                    imagesetpixel($img, $x+ 45, $y+ 45, $rgbColor);
                }
            }
        }
    }
    return $img;
}


/**
 * @desc 图片变圆角 第二次切割
 * @param string $imgpath
 * @param int $radius
 * @return false|resource
 * @author zhouzhou
 * @time 2022/1/4 11:36
 */
function radius_img_copy($imgpath = './public/qrcode/qrcode.jpg', $radius = 0){
    $ext = pathinfo($imgpath);
    $src_img = null;

    switch ($ext['extension']){
        case in_array($ext['extension'], ['jpg','jpeg']):
            $src_img = imagecreatefromjpeg($imgpath);
            break;
        case 'png':
            $src_img = imagecreatefrompng($imgpath);
            break;
        case 'gif':
            $src_img = imagecreatefromgif($imgpath);
            break;
    }
    $wh = getimagesize($imgpath);
    $w = $wh[0];
    $h = $wh[1];
    $radius = $radius == 0 ? (min($w, $h) / 2) : $radius;
    $img = imagecreatetruecolor($w , $h);
    //这一句一定要有
    imagesavealpha($img, true);
    //拾取一个完全透明的颜色,最后一个参数127为全透明
    $bg = imagecolorallocatealpha($img, 236, 236, 238, 127);
    imagefill($img, 0, 0, $bg);
    $r = $radius; //圆 角半径
    for ($x = 0; $x < $w; $x++){
        for ($y = 0; $y < $h; $y++){
            $rgbColor = imagecolorat($src_img, $x, $y);
            if (($x >= $radius && $x <= ($w - $radius)) || ($y >= $radius && $y <= ($h - $radius))){
                //不在四角的范围内,直接画
                imagesetpixel($img, $x, $y, $rgbColor);
            }else{
                //在四角的范围内选择画
                //上左
                $y_x = $r; //圆心X坐标
                $y_y = $r; //圆心Y坐标
                if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))){
                    imagesetpixel($img, $x, $y, $rgbColor);
                }
                //上右
                $y_x = $w - $r; //圆心X坐标
                $y_y = $r; //圆心Y坐标
                if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))){
                    imagesetpixel($img, $x, $y, $rgbColor);
                }
                //下左
                $y_x = $r; //圆心X坐标
                $y_y = $h - $r; //圆心Y坐标
                if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))){
                    imagesetpixel($img, $x, $y, $rgbColor);
                }
                //下右
                $y_x = $w - $r; //圆心X坐标
                $y_y = $h - $r; //圆心Y坐标
                if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))){
                    imagesetpixel($img, $x, $y, $rgbColor);
                }
            }
        }
    }
    return $img;
}


/**
 * [cut_img 图片缩放加白边]
 * Author: 程威明
 * @param  array $imgs    图片路径数组
 * @param  array $info    图片宽高数组array('width','height')
 * @param  bool $cover    是否覆盖原图，默认不覆盖
 * @return array          若覆盖原图返回裁剪数量，不覆盖返回图片路径组成的数组
 */
function zoom_img($imgs=array(),$infoarr=array(500,500),$cover=false)
{
    //判断是否为数组（必须是一个以图片路径组成的数组）
    $imgs = is_array($imgs)?$imgs:array($imgs);

    $i=0;
    foreach($imgs as $file){
        //如果不覆盖原图，可重新定义图片保存路径
        if(false==$cover){
            $file = $file;
        }

        //要保存的宽
        $saveWidth = $infoarr[0];

        //要保存的高
        $saveHeight = $infoarr[1];

        //判断图片是否存在
        if(!file_exists($file)) continue;

        //获取图片信息
        $imgize = getimagesize($file);

        //图片宽度
        $width = $imgize[0];
        //图片高度
        $height = $imgize[1];

        //原宽高比
        $ratio = $width/$height;

        //判断图片原宽高比与裁剪宽高比的大小
        if($width>=$height){
            $height = $saveWidth/$ratio;
            $width = $saveWidth;
        }else{
            $width = $saveHeight*$ratio;
            $height = $saveHeight;
        }
        $width -= 30;
        $height -= 30;

        //创建源图的实例
        $src = imagecreatefromstring(file_get_contents($file));

        if(false!=$src){
            //创建图像
            $final_image = imagecreatetruecolor($saveWidth, $saveHeight);
            //定义颜色
            $color = imagecolorallocate($final_image, 1, 1, 1); // 第一次上背景
            //定义为透明色
            imagecolortransparent($final_image,$color);
            //填充
            imagefill($final_image, 0, 0, $color);
            $x = round(($saveWidth - $width) / 2);
            $y = round(($saveHeight - $height) / 2);
            imagecopyresized($final_image, $src, $x, $y, 0, 0, $width, $height,$imgize[0],$imgize[1]);
            //保存
            if(false==$cover){
                $file = rtrim(dirname($file),'/').'/z_'.basename($file);
                $save_file[] = $file;
            }
            imagejpeg($final_image,$file);
            imagedestroy($final_image);
            imagedestroy($src);
        }

        $i++;
    }

    if(false==$cover){
        return $save_file;
    }else{
        return $i;
    }
}

